package com.xy.system.mode;

import com.xy.core.constant.PathUtil;
import freemarker.template.Configuration;
import freemarker.template.TemplateExceptionHandler;

import java.io.File;
import java.io.IOException;
import java.util.List;

public class TemplateSet {
    //模板文件列表
    private List<TemplateVO> files;

    //模板文件所在二级目录
    private String subPath;

    //velocity配置
    private Configuration cfg = null;

    public TemplateSet(List<TemplateVO> files, String inSubPath) {
        this.files = files;
        this.subPath = inSubPath;
    }

    /**
     * 初始化
     *
     * @throws Exception
     */
    public void init() throws Exception {
        if (cfg == null) {
            File templateFile = new File(PathUtil.resourceDir() + "/ftl/" + subPath);
            System.out.println("模板目录：" + templateFile.getAbsolutePath());
            cfg = new Configuration(Configuration.VERSION_2_3_32);
            cfg.setDirectoryForTemplateLoading(templateFile);
            cfg.setDefaultEncoding("UTF-8");
            cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
        }
    }

    /**
     * 所有的模板文件
     *
     * @return
     */
    public List<TemplateVO> getFiles() {
        return files;
    }

    /**
     * 查询文件
     *
     * @param templateName
     * @return
     */
    public freemarker.template.Template find(String templateName) {
        try {
            freemarker.template.Template temp = cfg.getTemplate(templateName);
            if (temp != null) {
                System.out.println("加载模板文件：" + templateName);
            } else {
                System.out.println("加载模板文件：" + templateName + ",失败");
            }

            return temp;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

}
